package com.xfg.domain.strategy.service.rule.tree.Impl;

import com.xfg.domain.strategy.model.valobj.RuleLogicCheckTypeV0;
import com.xfg.domain.strategy.service.rule.tree.ILogicTreeNode;
import com.xfg.domain.strategy.service.rule.tree.factory.DefaultTreeFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 次数锁节点
 */
@Slf4j
@Component("rule_lock")
public class RuleLockLogicTreeNode implements ILogicTreeNode {
    //次数锁节点（RuleLockLogicTreeNode）
    //行为：直接放行（ALLOW），不进行任何拦截。
    //原因：次数锁节点的作用是检查用户是否已经达到了抽奖次数的限制。如果用户未达到限制，则允许继续执行后续的逻辑；如果已达到限制，则会在后续的判断中被拦截。
    //设计意图：通过返回 ALLOW，让流程继续向下执行，由后续的节点（如库存检查）来决定最终是否可以领取奖品。
    @Override
    public DefaultTreeFactory.TreeActionEntity logic(String userId, Long strategyId, Integer awardId) {
        return DefaultTreeFactory.TreeActionEntity.builder()
                .ruleLogicCheckType(RuleLogicCheckTypeV0.ALLOW)
                .build();
    }
}
